import * as Blockly from 'blockly/core';

const UVA_HUE = "#0000f7"


// ---------无人机拓展----------------
export const uav_fly_init = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("初始化");
        this.appendDummyInput()
            .appendField("无人机");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip();
    }
};

export const uav_getTicks_sec = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendDummyInput()
            .appendField("获取 程序运行时间(s)");
        this.setInputsInline(true);
        this.setOutput(true, Number);
        this.setTooltip("[Teaile]:获取程序运行时间，从上电开始计时");
    }
};

export const uav_getTimer = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendDummyInput()
            .appendField("获取 定时器时间(s)");
        this.setInputsInline(true);
        this.setOutput(true, Number);
        this.setTooltip("[Teaile]:获取定时器时间");
    }
};

export const uav_clearTimer = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendDummyInput()
            .appendField("清零 定时器时间");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:定时器清零");
    }
};

export const uav_sleep = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('sleep')
            .appendField("延时")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("s");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:延时");
    }
};

export const uav_setAutoDelay = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('key')
            .appendField("自动延时")
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip();
    }
};

export const uav_fly_takeOff = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('high')
            .appendField("起飞")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("cm");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:起飞指定高度");
    }
};

export const uav_fly_flyMode = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("切换")
            .appendField(new Blockly.FieldDropdown([
                ['光流定位', "0"],
                ['标签定位', "1"],
                ['自主巡线', "2"]
            ]), 'mode');
        this.appendDummyInput()
            .appendField("模式");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:光流定位：只使用光流进行定位； 标签定位：使用光流+标签识别组合定位；自主巡线：使用光流+黑线识别组合定位");
    }
};

export const uav_fly_xySpeed = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('speed')
            .appendField("水平速度")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("cm/s");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:设置前后左右飞行的最大速度");
    }
};

export const uav_fly_zSpeed = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('speed')
            .appendField("垂直速度")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("cm/s");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:设置上升下降飞行的最大速度");
    }
};

export const uav_fly_moveCtrl = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("向")
            .appendField(new Blockly.FieldDropdown([
                ["前", "1"],
                ["后", "2"],
                ["左", "3"],
                ["右", "4"],
                ["上", "5"],
                ["下", "6"],
                ["左上", "7"],
                ["右上", "8"],
                ["左下", "9"],
                ["右下", "10"]
            ]), 'mode');
        this.appendValueInput('distance')
            .appendField("飞行")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("cm");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:往指定方向水平移动设定的距离");
    }
};

export const uav_fly_moveSearchDot = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("向")
            .appendField(new Blockly.FieldDropdown([
                ["前", "1"],
                ["后", "2"],
                ["左", "3"],
                ["右", "4"],
                ["上", "5"],
                ["下", "6"],
                ["左上", "7"],
                ["右上", "8"],
                ["左下", "9"],
                ["右下", "10"]
            ]), 'mode');
        this.appendValueInput('distance')
            .appendField("飞行")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("cm");
        this.appendDummyInput()
            .appendField("寻找黑色色块");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:往指定方向水平移动设定的距离（巡线模式下禁止使用），途中如果识别到黑点则自动切换为跟随模式并悬停在该黑点正上方");
    }
};

export const uav_fly_moveSearchBlob = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("向")
            .appendField(new Blockly.FieldDropdown([
                ["前", "1"],
                ["后", "2"],
                ["左", "3"],
                ["右", "4"],
                ["上", "5"],
                ["下", "6"],
                ["左上", "7"],
                ["右上", "8"],
                ["左下", "9"],
                ["右下", "10"]
            ]), 'mode');
        this.appendValueInput('distance')
            .appendField("飞行")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("cm");
        this.appendValueInput('LIST')
            .appendField("寻找色块");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:往指定方向水平移动设定的距离（巡线模式下禁止使用），途中如果识别到色块则自动切换为跟随模式并悬停在该色块正上方");
    }
};

export const uav_fly_moveSearchTag = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("向")
            .appendField(new Blockly.FieldDropdown([
                ["前", "1"],
                ["后", "2"],
                ["左", "3"],
                ["右", "4"],
                ["上", "5"],
                ["下", "6"],
                ["左上", "7"],
                ["右上", "8"],
                ["左下", "9"],
                ["右下", "10"]
            ]), 'mode');
        this.appendValueInput('distance')
            .appendField("飞行")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("cm");
        this.appendValueInput('tagID')
            .appendField("寻找")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("号标签");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:往指定方向水平移动设定的距离（巡线模式下会自动沿着线飞行），途中如果识别到指定编号的标签则自动切换为标签定位模式并悬停在该标签正上方，并且机头方向和标签方向自动对齐");
    }
};

export const uav_fly_moveFollowTag = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("向")
            .appendField(new Blockly.FieldDropdown([
                ["前", "1"],
                ["后", "2"],
                ["左", "3"],
                ["右", "4"],
                ["上", "5"],
                ["下", "6"],
                ["左上", "7"],
                ["右上", "8"],
                ["左下", "9"],
                ["右下", "10"]
            ]), 'mode');
        this.appendValueInput('distance')
            .appendField("飞行")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("cm");
        this.appendValueInput('tagID')
            .appendField("跟随")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("号标签");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:往指定方向水平移动设定的距离（巡线 模式下会自动沿着线飞行），途中如果识别到指定编号的标签则自动切换为跟随模式并悬停在该标签正上方");
    }
};

export const uav_fly_goTo = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('LIST')
            .appendField("直达");
        this.appendDummyInput()
            .appendField("坐标");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:直达指定位置，只能在编队地图上使用该命令！");
    }
};

export const uav_fly_goToTag = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('tagID')
            .appendField("直达")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("号标签");
        this.appendValueInput('high')
            .appendField("高度")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("cm");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:直达指定编号的标签，只能在编队地图上使用该命令！");
    }
};

export const uav_fly_rotation = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('angle')
            .appendField("旋转")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("°");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:自转指定角度，正数表示顺时针转，负数表示逆时针转");
    }
};

export const uav_fly_flyHigh = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('high')
            .appendField("高度")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("cm");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:调整飞行高度，建议高度值在 50-150 之间");
    }
};

export const uav_fly_flipCtrl = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("向")
            .appendField(new Blockly.FieldDropdown([
                ["前", "1"],
                ["后", "2"],
                ["左", "3"],
                ["右", "4"]
            ]), 'mode');
        this.appendValueInput('cir')
            .appendField("翻滚")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("圈");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:向指定方向翻滚指定圈数，最大 2 圈");
    }
};

export const uav_fly_ledCtrl = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('LIST')
            .appendField("RGB灯");
        this.appendDummyInput()
            .appendField("模式")
            .appendField(new Blockly.FieldDropdown([
                ["常亮", "0"],
                ["呼吸灯", "1"],
                ["七彩变幻", "2"]
            ]), 'mode');
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:设置灯光颜色和模式");
    }
};

export const uav_fly_closeLed = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("关闭灯光");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:关闭灯光");
    }
};

export const uav_fly_shootCtrl = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("发射激光")
            .appendField(new Blockly.FieldDropdown([
                ["单次", "0"],
                ["连续", "1"],
                ["停止", "2"]
            ]), 'mode');
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:打开或关闭激光枪");
    }
};

export const uav_fly_magnetCtrl = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("电磁铁")
            .appendField(new Blockly.FieldDropdown([
                ["关闭", "0"],
                ["打开", "1"]
            ]), 'mode');
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:打开或关闭电磁铁");
    }
};

export const uav_fly_servoCtrl = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('angle')
            .appendField("设置舵机")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("°");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:设置舵机角度");
    }
};

//---------Ctrl--------

export const uav_fly_mvCheckMode = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("检测")
            .appendField(new Blockly.FieldDropdown([
                ["黑点", "1"],
                ["黑线", "2"],
                ["标签", "3"]
            ]), 'mode');
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:打开黑点、黑线、标签检测。");
    }
};

export const uav_fly_mvCheckAprilTag = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('tagID')
            .appendField("检测")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("号标签");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:检测指定编号的标签，其他编号的标签不会被检测到");
    }
};

export const uav_fly_mvCheckBlob = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('LIST')
            .appendField("检测")
            .appendField(new Blockly.FieldDropdown([
                ["色块", "4"],
                ["色线", "5"]
            ]), 'mode');
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:检测指定颜色阈值的色块");
    }
};

export const uav_fly_getFlySensor = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("获取")
            .appendField(new Blockly.FieldDropdown([
                ["标签号", "'tagID'"],
                ["二维码", "'qrCode'"],
                ["条形码", "'brCode'"],
                ["横滚角", "'rol'"],
                ["俯仰角", "'pit'"],
                ["偏航角", "'yaw'"],
                ["横坐标", "'loc_x'"],
                ["纵坐标", "'loc_y'"],
                ["高度", "'loc_z'"],
                ["横轴误差", "'err_x'"],
                ["纵轴误差", "'err_y'"],
                ["高度误差", "'err_z'"],
                ["电压", "'vol'"]
            ]), 'mode');
        this.appendDummyInput()
            .appendField("数据");
        this.setInputsInline(true);
        this.setOutput(true, Number);
        this.setTooltip("[Teaile]:返回无人机各个传感器数据");
    }
};

export const uav_fly_lockDir = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("机头方向")
            .appendField(new Blockly.FieldDropdown([
                ["锁定", "1"],
                ["解锁", "0"]
            ]), 'mode');
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:锁定或解锁飞机的方向");
    }
};

export const uav_fly_flyCtrl = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("进行")
            .appendField(new Blockly.FieldDropdown([
                ["降落", "0"],
                ["刹车", "1"],
                ["悬停", "2"],
                ["急停", "3"],
                ["校准", "4"]
            ]), 'mode');
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:控制飞机降落、刹车、悬停和急停，还能水平校准");
    }
};

export const uav_fly_photographMode = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("回传")
            .appendField(new Blockly.FieldDropdown([
                ["拍照", "1"],
                ["颜色采样", "2"],
                ["颜色识别", "3"],
                ["计数识别0", "4"],
                ["计数识别1", "5"]
            ]), 'mode');
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:回传设定模式的图片，回传成功后可以在“图形化编队”的工具->无线图传窗口查看");
    }
};

export const uav_fly_roleCtrl = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('data')
            .appendField("发送")
            .setCheck(String);
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:发送字符串消息");
    }
};

export const uav_fly_getRoleNews = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("获取消息")
            .appendField(new Blockly.FieldDropdown([
                ["内容", "'details'"],
                ["序号", "'id'"]
            ]), 'mode');
        this.setInputsInline(true);
        this.setOutput(true, Number);
        this.setTooltip("[Teaile]:返回消息内容");
    }
};

export const uav_fly_clearRoleNews = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("清除消息");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:清除消息内容");
    }
};

export const uav_fly_move = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("从")
            .appendField(new Blockly.FieldDropdown([
                ["当前", "0"],
                ["目标", "1"]
            ]), 'mode');
        this.appendValueInput('LIST')
            .appendField("移动");
        this.appendDummyInput()
            .appendField("cm");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:从当前或者目标位置移动");
    }
};

export const uav_setCenterOffset = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('LIST')
            .appendField("调整重心偏移");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:调整重心偏移(x,y)！");
    }
};

export const uav_setLocation = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('LIST')
            .appendField("设置当前位置");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]: 设置当前位置为__,__");
    }
};

export const uav_setTagDistance = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('high')
            .appendField("设置标签间距")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("cm");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:设置标签间距为__厘米");
    }
};

export const uav_cameraDeg = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('ange')
            .appendField("设置镜头角度")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("°");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:设置镜头__度");
    }
};

export const uav_irSend = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("红外以")
            .appendField(new Blockly.FieldDropdown([
                ["NEC", "0"],
                ["保密", "1"]
            ]), 'mode');
        this.appendValueInput('LIST')
            .appendField("协议发送");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]: 红外发送");
    }
};

export const uav_showStr = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("OLED在");
        this.appendValueInput('x')
            .appendField("(")
            .setCheck(Number);
        this.appendValueInput('y')
            .appendField(",")
            .setCheck(Number);
        this.appendValueInput('data')
            .appendField(") 显示字符串")
            .setCheck(String);
        this.appendValueInput('num')
            .appendField("放大倍数")
            .setCheck(Number);
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:显示字符串");
    }
};

export const uav_showCtrl = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("OLED显示")
            .appendField(new Blockly.FieldDropdown([
                ["生效", "4"],
                ["清屏", "8"]
            ]), 'mode');
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]: 显示控制");
    }
};

export const uav_photoOk = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendDummyInput()
            .appendField("回传是否成功?");
        this.setInputsInline(true);
        this.setOutput(true, Number);
        this.setTooltip("[Teaile]:回传是否成功");
    }
};

export const uav_getKeyPress = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("按键")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("是否按下?");
        this.setInputsInline(true);
        this.setOutput(true, Number);
        this.setTooltip("[Teaile]:按键回传");
    }
};

export const uav_isMvCheck = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("检测到")
            .appendField(new Blockly.FieldDropdown([
                ["色块", "5"],
                ["标签", "4"],
                ["二维码", "6"],
                ["条形码", "7"]
            ]), 'mode');
        this.appendDummyInput()
            .appendField("?");
        this.setInputsInline(true);
        this.setOutput(true, Number);
        this.setTooltip("[Teaile]:判断是否检测到色块、二维码、标签");
    }
};

export const uav_isMvCheckLine = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("检测到")
            .appendField(new Blockly.FieldDropdown([
                ["前", "0"],
                ["后", "1"],
                ["左", "2"],
                ["右", "3"]
            ]), 'mode');
        this.appendDummyInput()
            .appendField("边有线?");
        this.setInputsInline(true);
        this.setOutput(true, Number);
        this.setTooltip("[Teaile]:判断是否检测到指定方向上的黑线");
    }
};

export const uav_getObsDistance = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("离")
            .appendField(new Blockly.FieldDropdown([
                ["前", "0"],
                ["后", "1"],
                ["左", "2"],
                ["右", "3"]
            ]), 'mode');
        this.appendDummyInput()
            .appendField("障碍物距离");
        this.setInputsInline(true);
        this.setOutput(true, Number);
        this.setTooltip("[Teaile]:返回指定方向上的障碍物距离");
    }
};

export const uav_getBlobResult = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("获取 色块")
            .appendField(new Blockly.FieldDropdown([
                ["数量", "'n'"],
                ["面积", "'s'"],
                ["长度", "'w'"],
                ["宽度", "'h'"]
            ]), 'mode');
        this.setInputsInline(true);
        this.setOutput(true, Number);
        this.setTooltip();
    }
};

export const uav_switchCtrl = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('key')
            .appendField("开关")
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip();
    }
};

export const uav_getScaleWeight = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("获取电子秤数据");
        this.setInputsInline(true);
        this.setOutput(true, Number);
        this.setTooltip("[Teaile]:获取电子秤数据");
    }
};

export const uav_getShootResult = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("获取 射击")
            .appendField(new Blockly.FieldDropdown([
                ["序号", "'number'"],
                ["成绩", "'result'"],
                ["横坐标", "'x'"],
                ["纵坐标", "'y'"]
            ]), 'mode');
        this.setInputsInline(true);
        this.setOutput(true, Number);
        this.setTooltip();
    }
};

export const uav_snapshot = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendDummyInput()
            .appendField("获取图像");
        this.setOutput(true);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:控制摄像头捕捉图像");
    }
};

export const uav_display = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机 显示图像");
        this.appendValueInput('img')
            .appendField("");
        this.setInputsInline(true);
        this.setPreviousStatement(true);
        this.setNextStatement(true);
        this.setTooltip("[Teaile]:在液晶屏上显示一张image（GRAYSCALE或RGB565");
    }
};

export const uav_end = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机 程序结束");
        this.setInputsInline(true);
        this.setPreviousStatement(true);
        this.setNextStatement(true);
        this.setTooltip("[Teaile]:程序结束");
    }
};

export const uav_while = {
    init: function () {
        this.setColour(UVA_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('BOOL')
            .appendField("等待直到");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:等待直到");
    }
};